﻿using System;
using Cesave.Domain.Core.Specification;
using Cesave.Domain.PermisosModule.Entities;
using Cesave.Domain.PermisosModule.Resources;

namespace Cesave.Domain.PermisosModule.Contracts.Agentes
{
	public class AgenteByUsuarioSpecification
		: Specification<Agente>
	{
		#region Private properties

		private string _usuario = default(string);

		#endregion

		#region Constructor

		/// <summary>
		/// 
		/// </summary>
		/// <param name="usuario"></param>
		public AgenteByUsuarioSpecification(string usuario)
		{
			if (string.IsNullOrEmpty(usuario) || string.IsNullOrWhiteSpace(usuario))
				throw new InvalidOperationException(Messages.exception_InvalidArgument);
			_usuario = usuario;
		}

		#endregion

		#region Specification overrides

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public override System.Linq.Expressions.Expression<Func<Agente, bool>> SatisfiedBy()
		{
			Specification<Agente> specification = new DirectSpecification<Agente>(agente => agente.Usuario.Trim().ToLower() == _usuario.Trim().ToLower());
			return specification.SatisfiedBy();
		}

		#endregion
	}
}
